"""
@name : 生成器与迭代器
@author : shiyaling
@projectname : xsfh
"""
# import string
# import random
#
# with open("big.data","w+",encoding="utf-8") as f:
#     f.write("aaaaaaaaaaaaaaaaaa\n"*10**7)
#     f.write(("".join(random.choices(string.ascii_lowercase,k=random.randint(1,50)))+"\n"))
# with open("big.data","r+",encoding="utf-8") as fp:
#     g1 = (i for i in fp)
#     print(len(max(g1,key = len)))


######如何判断可迭代对象，迭代器对象或生成器
#可迭代对象可以实现__iter__()方法，并且该方法返回一个迭代器
#迭代器对象是任何实现__iter__()和__next__()方法的都是迭代器对象
#生成器是特殊的迭代器，但他不需要手动编写__iter__()和__next__()方法，只需要一个yield关键字


######迭代器与生成器的区别
#迭代器需要手动编写__iter__()和__next__()方法而生成器只需要yield关键字


######可迭代对象和迭代器的区别
#可迭代对象是实现__iter__()方法并返回迭代器
#而迭代器需要同时实现__iter__()和__next__()方法

######如何定义一个生成器
#使用生成器表达式
#使用yield关键字，定义一个生成器函数


######如何获取可迭代对象、迭代器与生成器中的数据
#可迭代对象：enumerate() list() 或者for循环
#迭代器或生成器：list() 或者next()函数 或者可用for循环



#1、输入两个日期，计算两个日期之间相差的天数
import time
# time1 = input("请输入第一个时间：")
# time2 = input("请输入第二个时间：")
# t1 = time.strptime(time1,"%Y-%m-%d")
# t1_time = int(time.mktime(t1))
# t2 = time.strptime(time2,"%Y-%m-%d")
# t2_time = int(time.mktime(t2))
# days = abs(t2_time - t1_time)/60/60/24
# print(days)



#2、输入一个数字n，计算n天之前是什么日期，输出日期形式为“2021-07-27”
# n = int(input("请输入："))
# time1 = time.time()
# time2 = (time1/60/60/24 - int(n))*60*60*24
# time3 = time.localtime(time2)
# print(time.strftime("%Y-%m-%d",time3))



#3、统计当前文件夹的大小（python实现，预备知识：os模块）
# import os
# list = os.listdir(os.getcwd())
# num = 0
# for i in list:
#     num += os.path.getsize(i)
#
# print(f"当前文件夹的大小为{num}B")
# print(f"当前文件夹的大小为{num//1024//1024}MB")
